package com.ftg.learn.chapter02.ee.util.web;

import lombok.Data;

/**
 * 返回类型 -
 *
 * @author kangjx
 * @version 1.0
 * @date 2024/1/4 上午9:00
 */
@Data
public class R<T> {

    /**
     * 状态码
     * 200 ： 表示成功
     * 4001: 表示参数错误
     * 4002: 类型转换错误
     * 50001 : 添加、修改、删除等操作失败
     *
     */
    private int code;

    /**
     * 消息
     */
    private String msg;

    /**
     * 数据
     */
    private T data;

    /**
     * 成功
     * @param data  数据
     * @param msg   提示信息可以不写
     * @param <E> 数据类型
     * @return  R
     */
    public static <E> R<E> ok(E data,String... msg) {
        R<E> r1 = new R<E>();
        r1.setCode(Const.SUCCESS_CODE);
        if(msg.length <=1){
            r1.setMsg(msg.length == 0 ? Const.SUCCESS_MSG:msg[0]);
        }
        r1.setData(data);
        return r1;
    }

    /**
     * 失败
     * @return R
     * @param <E>  数据类型
     */
    public static <E>  R<E> failure() {
        R<E> r1 = new R<>();
        r1.setCode(Const.FAILURE_CODE);
        r1.setMsg(Const.FAILURE_MSG);
        return r1;
    }

}
